package day05;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

public class Demo07 {
    public static void main(String[] args) throws InterruptedException {
        /*
         * 阻塞队列测试
         */
        //创建一个最多缓存4个字符串的队列
        BlockingQueue<String> queue= new LinkedBlockingQueue<>(4);
        Thread t1 = new Thread(){
            @Override
            public void run() {
                //take() 阻塞方法, 如果队列中有数据, 则立即返回
                // 如果队列中没有数据, 则等到有数据为止, 有数据再返回
                // 等待期间, 线程被打断 就发生异常
                try {
                    String str = queue.take();
                    System.out.println(str);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    //等待过程被打断了!
                }
            }
        };
        t1.start();
        Thread.sleep(2000);
        System.out.println("添加数据");
        queue.add("Hello World!");
    }
}
